package com.nep.NEPS.controller;

import com.nep.common.util.ApplicationContextUtil;
import com.nep.common.util.AuthUtil;
import com.nep.common.util.SceneSwitcherUtil;
import com.nep.entity.supervisor.User;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;

import static com.nep.common.util.AlertUtil.*;

/**
 * 公众监督员主界面控制器
 * 处理监督员主界面的初始化和功能导航逻辑
 */
public class SupervisorMainViewController {
    @FXML private Label welcomeLabel;       // 欢迎信息标签
    @FXML private Label gridAddressLabel;   // 网格地址标签
    @FXML private Button reportBtn;         // 提交报告按钮
    @FXML private Button recordBtn;         // 查看记录按钮
    @FXML private Button logoutBtn;         // 退出登录按钮
    @FXML private Button gridBtn;           // 修改网格按钮

    private User currentUser;               // 当前登录用户

    /**
     * 初始化方法（由FXML加载器自动调用）
     * 完成用户信息显示、权限验证和界面初始化
     */
    public void initialize() {
        // 检查用户登录状态，未登录则跳转登录页面
        AuthUtil.checkLoginStatus(logoutBtn);

        currentUser = ApplicationContextUtil.getInstance().getCurrentUser();
        if (currentUser == null) {
            showError("系统错误", "未能获取当前用户信息，请重新登录");
            return;
        }

        // 显示欢迎信息
        welcomeLabel.setText("欢迎，" + currentUser.getRealName() + "！");

        // 显示网格地址信息（处理未选择的情况）
        String gridAddress = currentUser.getGridAddress();
        gridAddressLabel.setText("当前网格: " + (gridAddress == null || gridAddress.isEmpty() ? "未选择" : gridAddress));
    }

    /**
     * 处理提交报告按钮点击事件
     * 检查网格地址后导航到报告提交页面
     */
    @FXML
    private void handleReport() {
        // 验证是否已选择网格地址
        String gridAddress = currentUser.getGridAddress();
        if (gridAddress == null || gridAddress.isEmpty()) {
            showError("操作失败", "请先选择网格地址");
            // 导航到网格选择页面
            SceneSwitcherUtil.switchScene(reportBtn, "/com/nep/NEPS/view/SupervisorGridSelectView.fxml");
            return;
        }
        // 已选择网格，导航到报告提交页面
        SceneSwitcherUtil.switchScene(reportBtn, "/com/nep/NEPS/view/SupervisorReportView.fxml");
    }

    /**
     * 处理查看记录按钮点击事件
     * 导航到历史记录查看页面
     */
    @FXML
    private void handleRecord() {
        SceneSwitcherUtil.switchScene(recordBtn, "/com/nep/NEPS/view/SupervisorRecordView.fxml");
    }

    /**
     * 处理退出登录按钮点击事件
     * 调用认证工具类完成登出操作
     */
    @FXML
    private void handleLogout() {
        AuthUtil.logout(logoutBtn);
    }

    /**
     * 处理修改网格按钮点击事件
     * 导航到网格地址选择页面
     */
    @FXML
    private void handleChangeGrid() {
        SceneSwitcherUtil.switchScene(gridBtn, "/com/nep/NEPS/view/SupervisorGridSelectView.fxml");
    }
}